package com.zhenhe.core.common.utils.http;

import com.zhenhe.core.common.dao.Page;

public class PageHelp {

	private static final Integer SHOWNUM = 2;
	
	@SuppressWarnings("rawtypes")
	public static String paging(Page page){
		String queryString = page.getQueryString()+"pageNo=";
		StringBuffer sb = new StringBuffer();
		sb.append("<ul id=\"pagination-digg\" >");
		if(page.isFirstPage()){
			//第一页，没有上一页
			sb.append("<li class=\"previous off\">&laquo;Previous</li>");
			//第一页为不可选
			sb.append("<li class=\"active\">1</li>");

			if(page.isLastPage()){
				//既是第一页也是最后一页
				sb.append("<li class=\"next off\">Next &raquo;</li>");
			}else{
				//第一页非上一页，有下一页
				//循环判断
				for(int i=2;i<=page.getLast()&&i<=SHOWNUM+1;i++){
					sb.append("<li><a href='"+queryString+i+"'>"+i+"</a></li>");
				}
				//有更多
				if(page.getLast()>SHOWNUM+2){
					sb.append("<li>...</li>");
				}
				if(page.getLast()>SHOWNUM+1){
					sb.append("<li><a href='"+queryString+page.getLast()+"'>"+page.getLast()+"</a></li>");
				}
					sb.append("<li class=\"next\"><a href='"+queryString+page.getNext()+"'>Next &raquo;</a></li>");
			}
		}else{
			//非第一页，有上一页
			sb.append("<li class=\"previous\"><a href='"+queryString+page.getPrev()+"'> &laquo;Previous</a> </li>");
			//第一页可选
			sb.append("<li><a href='"+queryString+"1'>1</a></li>");
			
			if(page.isLastPage()){
				//最后一页
				if(page.getLast()>SHOWNUM+2){
					//有更多
					sb.append("<li>...</li>");
				}
				for(int i=page.getLast()-SHOWNUM;i<page.getLast();i++){
					if(i<2)continue;
					sb.append("<li><a href='"+queryString+i+"'>"+i+"</a></li>");
				}
				sb.append("<li class=\"active\">"+page.getLast()+"</li>");
				sb.append("<li class=\"next off\">Next &raquo;</li>");
			}else{
				int pageNo = page.getPageNo();
				if(pageNo-SHOWNUM>2){
					sb.append("<li>...</li>");
				}
				for(int i=pageNo-SHOWNUM;i<pageNo+SHOWNUM+1;i++){
					if(i<2||i>page.getLast()-1){
						continue;
					}
					if(i==pageNo){
						sb.append("<li class=\"active\">"+i+"</li>");
						continue;
					}
					sb.append("<li><a href='"+queryString+i+"'>"+i+"</a></li>");
				}
				if(pageNo+SHOWNUM<page.getLast()){
					sb.append("<li>...</li>");
				}
				sb.append("<li><a href='"+queryString+page.getLast()+"'>"+page.getLast()+"</a></li>");
				sb.append("<li class=\"next\"><a href='"+queryString+page.getNext()+"'>Next &raquo;</a></li>");
			}
		}
		sb.append("</ul>");
		return sb.toString();
	}
	

}
